package org.example.covid;

import org.apache.hadoop.util.ProgramDriver;
import org.example.covid.appointedday.CountyTopNApp;
import org.example.covid.appointedday.CovidSortSumApp;
import org.example.covid.appointedday.CovidSumApp;
import org.example.covid.appointedday.StateDeathRatioApp;
import org.example.covid.daily.DailyDeathRatioApp;
import org.example.covid.daily.DailyIncrementApp;
import org.example.covid.daily.DailySumApp;
import org.example.covid.partion.CovidPartitionApp;

public class ExampleDriver {

    public static void main(String[] args) {
        int exitCode = -1;
        ProgramDriver pgd = new ProgramDriver();
        try {
            pgd.addClass("sum", CovidSumApp.class,"1、统计指定日期下，美国每个州的累计确诊人数和累计死亡人数。");
            pgd.addClass("sortsum", CovidSortSumApp.class,"2、对实验1的结果按累计确诊人数进行倒序排序");
            pgd.addClass("statedeathratio", StateDeathRatioApp.class,"3、对实验1的结果再运算，统计截止指定日期，全美各州的病死率。病死率 = 死亡数/确诊数。");
            pgd.addClass("dailysum", DailySumApp.class,"4、统计美国截止每日的累计确诊人数和累计死亡人数。做法是以date作为分组字段，对cases和deaths字段进行汇总统计。");
            pgd.addClass("dailyincrement", DailyIncrementApp.class,"5、对实验3的结果再运算，统计美国每日的新增确诊人数和新增死亡人数。");
            pgd.addClass("dailydeathratio", DailyDeathRatioApp.class,"6、对实验3的结果再运算，统计美国截止当日的病死率。");
            pgd.addClass("partition", CovidPartitionApp.class,"7、将美国不同州的疫情数据输出到不同文件，属于同一个州的各个县输出到同一个结果文件中。");
            pgd.addClass("countytopn", CountyTopNApp.class,"8、统计指定日期下，美国每个州的确诊案例最多前N（TopN）的县。（重写排序规则，重写分组规则）。");
            exitCode = pgd.run(args);
        } catch (Throwable e){
            e.printStackTrace();
        }

        System.exit(exitCode);
    }
}
